<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      //～加油～
      /*
          1. 创建一个对象有那两种方式
           */

      /* 
          1.var obj = {}
          2.var obj = new Object
        */

      /*
          2. 请举例说明，对象的基本操作的两种语法
          */

      /* 
          1.点语法
            增:obj.name = "lihua"
            删:delete obj.name
            改:obj.name = "xiaoming"
            查:obj.name

          2.数据关联语法
            增:obj["name"] = "lihua"
            删:delete obj["name"]
            改:obj["name"] = "xiaoming"
            查:obj["name"]
          */

      /*
          3.对象的curd，两种语法有什么区别 
          */

      /* 
          1.书写:
            - 点语法:符合命名规则和规范的
            - 数据关联语法:
                - 纯数字
                - 特殊字符
                - 解析变量的
                - 带运算的

          */

      /*
          4.对象怎么遍历？那个是键名，那个是键值
          */

      for (var k in obj) {
        console.log(k); // k为键名
        console.log(obj[k]); //obj[k]为键值
      }

      /*
          5.简单和复杂数据类型在存储上的区别是什么？
          那赋值和比较上的区别又是什么？
          */

      /*
        1.存储:
            - 简单数据类型:数据存在栈内
            - 复杂数据类型:地址存在栈内,真实数据存在堆里
        2.赋值:
            - 简单数据类型:
                - 值的赋值,
                - 两个变量无关,
                - 其中一个改变,另一个不会改变
            - 复杂数据类型:
                -变量的存储的地址的赋值
                - 两个变量操作在同一空间
                - 其中一个改变,另一个也会改变
        3.比较
            - 简单数据类型:值与值之间的比较
            - 复杂数据类型:地址和地址的比较
        
        

       */

      /* 
            6.完善第二天演示的简易计算机，可以做到选择加减乘除运算
          */

      btn.onclick = function () {
        var type = opt.value;
        console.log(fu);
        var n1 = one.value - 0;
        var n2 = Number(two.value);
        var res = 0;
        // 方法1：
        if (fu == "+") {
          res = n1 + n2;
        }
        if (fu == "-") {
          res = n1 - n2;
        }
        if (fu == "*") {
          res = n1 * n2;
        }
        if (fu == "/") {
          res = n1 / n2;
        }
        result.value = res;
      };
      // 方法2：
      switch (type) {
        case "+":
          res = n1 + n2;
          break;
        case "-":
          res = n1 - n2;
          break;
        case "*":
          a;
          res = n1 * n1 - n2;
          break;
        case "/":
          res = n1 / n2;
          break;
      }
      result.value = res;

      /* 
            7.给一个不多于5位的正整数，要求：一、求它是几位数，二、逆序打印出各位数字。
          */

      // var n = window.prompt("请输入一个不多于5为的正整数");
      var n = "3456";
      var len = n.length;
      var res = "";
      var arr = [];
      if (0 < len < 6) {
        console.log("输入的数字是:" + n);
        console.log("这个数是" + len + "位数的");
        for (var i = 1; i <= len; i++) {
          var x = n % 10;
          res += x;
          // 转数组输出
          arr.push(x);
          n = parseInt(n / 10);
        }
        console.log("逆序打印数字：" + res);
        console.log("逆序打印转成数组输出：" + arr);
      } else {
        alert("请正确输入!");
      }

      // 方法2：
      // 求长度
      var i = 0;
      while (num > 0) {
        num = parseInt(num / 10);
        i++;
      }
   
      // 逆序
      var str = "";
      for (var i = String(num).length - 1; i >= 0; i--) {
        str += String(num)[i];
      }
      console.log(Number(str));

      /* 
            8.(提高题)将100元整钞换成20元、10元、5元、2元、1元零钱，要求零钱总张数为30张，求有多少种换法？
         */

      var a, b, c, d, e;
      var n = 0; //初始化
      for (a = 0; a <= 100; a++) {
        for (b = 0; b <= (100 - a) / 2; b++) {
          for (c = 0; c <= (100 - a - 2 * b) / 5; c++) {
            for (d = 0; d <= (100 - a - 2 * b - 5 * c) / 10; d++) {
              for (e = 0; e <= (100 - a - 2 * b - 5 * c - 10 * d) / 20; e++) {
                if (
                  a + b + c + d + e === 30 &&
                  a + 2 * b + 5 * c + 10 * d + 20 * e === 100
                ) {
                  n++;
                }
              }
            }
          }
        }
      }
      console.log("有" + n + "种换法");

      // 每张至少有一张，方法1
      var a, b, c, d, e;
      var n = 0; //初始化
      for (a = 0; a <= 100; a++) {
        for (b = 0; b <= (100 - a) / 2; b++) {
          for (c = 0; c <= (100 - a - 2 * b) / 5; c++) {
            for (d = 0; d <= (100 - a - 2 * b - 5 * c) / 10; d++) {
              for (e = 0; e <= (100 - a - 2 * b - 5 * c - 10 * d) / 20; e++) {
                if (
                  a + b + c + d + e === 30 &&
                  a + 2 * b + 5 * c + 10 * d + 20 * e === 100 &&
                  a * b * c * d * e != 0
                ) {
                  n++;
                }
              }
            }
          }
        }
      }
      console.log("有" + n + "种换法");

      // 每张至少有一张，方法2
      var a, b, c, d, e;
      var n = 0; //初始化
      for (a = 1; a <= 100; a++) {
        for (b = 1; b <= (100 - a) / 2; b++) {
          for (c = 1; c <= (100 - a - 2 * b) / 5; c++) {
            for (d = 1; d <= (100 - a - 2 * b - 5 * c) / 10; d++) {
              for (e = 1; e <= (100 - a - 2 * b - 5 * c - 10 * d) / 20; e++) {
                if (
                  a + b + c + d + e === 30 &&
                  a + 2 * b + 5 * c + 10 * d + 20 * e === 100
                ) {
                  n++;
                }
              }
            }
          }
        }
      }
      console.log("有" + n + "种换法");

       // 每张至少有一张，方法3
       var a, b, c, d, e;
      var n = 0; //初始化
      for (a = 0; a <= 62; a++) {
        for (b = 0; b <= (62 - a) / 2; b++) {
          for (c = 0; c <= (62 - a - 2 * b) / 5; c++) {
            for (d = 0; d <= (62 - a - 2 * b - 5 * c) / 10; d++) {
              for (e = 0; e <= (62 - a - 2 * b - 5 * c - 10 * d) / 20; e++) {
                if (
                  a + b + c + d + e === 25 &&
                  a + 2 * b + 5 * c + 10 * d + 20 * e === 62
                ) {
                  n++;
                }
              }
            }
          }
        }
      }
      console.log("有" + n + "种换法");
    </script>
  </body>
</html>
